#pragma once
#include "Float16.h"

namespace Alice{
    struct FLinearColor;
    /**
     *	RGBA Color made up of FFloat16
    */
    class FFloat16Color
    {
    public:

        FFloat16 R;
        FFloat16 G;
        FFloat16 B;
        FFloat16 A;

        /* Get as a pointer to four half floats */
        uint16 * GetFourHalves() { return (uint16 *)this; }
        const uint16 * GetFourHalves() const { return (const uint16 *)this; }

        const FLinearColor GetFloats() const;

        /** Default constructor */
        FFloat16Color();

        /** Copy constructor. */
        FFloat16Color(const FFloat16Color& Src);

        /** Constructor from a linear color. */
        FFloat16Color(const FLinearColor& Src);

        /** assignment operator */
        FFloat16Color& operator=(const FFloat16Color& Src);

        /**
         * Checks whether two colors are identical.
         *
         * @param Src The other color.
         * @return true if the two colors are identical, otherwise false.
         */
        bool operator==(const FFloat16Color& Src) const;
    };
}